.. _secSlv_ReadCoeSdo_A: secSlv_ReadCoeSdo_A =================== ------------------- .. warning:: 이 함수는 해당 슬레이브가 PreOP 이상의 AL-STATE 에 있을 때에만 사용 가능합니다. 슬레이브가 INITIAL 상태에 있을 때 이 함수를 사용하면 읽기 실패합니다 SYNOPSIS `````````` .. code-block:: none t_i32 secSlv_ReadCoeSdo_A ( [in] t_i32 NetID, [in] t_ui16 SlaveIdx, [in] t_i32 Index, [in] t_i32 SubIndex, [in] t_i32 IsComptAccess, [in] t_i32 DataSize, [out] void* pBuf, [out] t_i32 *ErrCode ) DESCRIPTION ````````````` - 지정한 슬레이브에서 지정된 SDO(Service Data Object) 오브젝트를 읽어서 반환하는 함수입니다. PARAMETER ``````````````` - NetID : 사용자가 사용 할 Network 번호 - SlaveIndex : 슬레이브 번호 (1 Base) - Index : 오브젝트 인덱스(Object Index) - SubIndex : 오브젝트 서브인덱스(Sub-index) - IsComptAccess: 오브젝트가 배열이나 구조체로 이루어진 경우 해당 오브젝트의 모든 서브인덱스에 해당하는 값을 읽을지 결정하는 플래그. +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Value | Meaning | +=======+==========================================================================================================================================================================+ | 0 | 지정한 서브인덱스에 대해서만 값을 읽습니다 | +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 1 | 모든 서브인덱스에 대한 데이터를 한꺼번에 읽습니다. 이 경우에는 SubIndex 값을 0으로 전달해야 하며, 버퍼는 오브젝트의 전체 데이터 구조와 일치하는 버퍼가 제공되어야 합니다 | +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - DataSize : 읽어올 Data Size. 이 값은 오브젝트 사전에서 정의된 해당 오브젝트의 데이터 크기와 일치해야 합니다. 그렇지 않으면 읽기에 실패할 수 있습니다. - pBuf: 읽은 데이터를 전달 받을 버퍼. ([out]) - ErrCode : 이 매개 변수를 통하여 현재의 에러 코드를 반환합니다. 단, 이 매개 변수에 NULL을 전달하면 에러 코드를 반환하지 않습니다. RETURN VALUE ``````````````` - 반환 값이 양수이면 읽은 데이터의 크기를 반환하는 것입니다. 반환 값이 음수이면 에러코드를 반환하는 것입니다. EXAMPLE ````````````` .. image:: secSlv_ReadCoeSdo_A_00.jpg :align: center .. code-block:: c++ :linenos: :emphasize-lines: 13 //ETS-EC04H 슬레이브에서 채널의 Input Pulse Mode를 변화시키는 예제 //Slave Address는 1, 0번 채널을 변화시킨다고 가정 #define NETID 0 #define SLAVE_ADDR 0x1 t_i32 errCode; t_ui8 PulseMode = 4; // CW / CCW t_ui8 PulseMode_rtn = 0; secSlv_WriteCoeSdo_A(NETID, SLAVE_ADDR, 0x8000, 0x0D, false, 4, &PulseMode, &errCode); //값이 제대로 설정되었는지 확인 secSlv_ReadCoeSdo_A(NETID, SLAVE_ADDR, 0x8000, 0x0D, false, 4, &PulseMode_rtn, &errCode); printf("설정된 Pulse Mode 값은 %d 입니다!", PulseMode_rtn); .. seealso:: :ref:`secSlv_WriteCoeSdo_A`